package DSdatastructure;

import java.lang.reflect.Array;
import java.util.*;

public class TextDS {
    //给定两个字符串 S 和 T ，判断 S 是否是 T 的子序列。
    //即是否可以从 T 删除一些字符转换成 S。
    //https://www.nowcoder.com/share/jump/5544427231717134736420
    public boolean isSubsequence (String S, String T) {
            // write code here
            int sLen = S.length();
            int tLen = T.length();

            int i = 0;
            int j = 0;

            while (i < sLen && j <  tLen) {
                if (S.charAt(i) == T.charAt(j)) {
                    i++;
                    j++;
                }else {
                    j++;
                }
            }
            if (i < sLen && j >= tLen) {
                return false;
            }else {
                return true;
            }
    }

    //点击消除
    //https://www.nowcoder.com/share/jump/5544427231717168645031
    //牛牛拿到了一个字符串。
    //他每次“点击”，可以把字符串中相邻两个相同字母消除，例如，字符串"abbc"点击后可以生成"ac"。
    //但相同而不相邻、不相同的相邻字母都是不可以被消除的。
    //牛牛想把字符串变得尽可能短。他想知道，当他点击了足够多次之后，字符串的最终形态是什么？
    //输入描述：
    //一个字符串，仅由小写字母组成。（字符串长度不大于300000）
    //输出描述：
    //一个字符串，为“点击消除”后的最终形态。若最终的字符串为空串，则输出0。
    public static void main1(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNextLine()) { // 注意 while 处理多个 case
            String str = in.nextLine();
            Stack<Character> stack = new Stack<>();
            for (int i = 0; i < str.length(); i++) {
                if (stack.empty() || str.charAt(i) != stack.peek()) {
                    stack.push(str.charAt(i));
                }else {
                    stack.pop();
                }
            }
            if (stack.empty()) {
                System.out.println("0");
                return;
            }else {
                Stack<Character> stack1 = new Stack<>();
                while (!stack.empty()) {
                    stack1.push(stack.pop());
                }
                while (!stack1.empty()) {
                    System.out.println(stack1.pop());
                }
            }
            /*ArrayList<Character> arrayList = new ArrayList<>();
            while (!stack.empty()) {
                arrayList.add(stack.pop());
            }
            Collections.reverse(arrayList);
            for (int i = 0; i < arrayList.size(); i++) {
                System.out.println(arrayList.get(i));
            }*/
        }
    }

}
